package cn.leaf.calculator.bean;

import java.io.Serializable;
import java.util.Map;

/**
 * 计算单元源信息
 *
 * @author 李克国
 * @version 1.0.0
 */
public interface CalUnitBeanDefinition<T> extends FormulaBeanDefinition<T> {
    /**
     * 计算单元创建的
     */
    int CALUNIT_STATE_CREATE = 10;
    /**
     * 计算单元初始化的
     */
    int CALUNIT_STATE_INITIALIZE = 11;
    /**
     * 计算单元准备计算：正常
     */
    int CALUNIT_STATE_CAL = 12;

    /**
     * 计算单元准备计算：等待
     */
    int CALUNIT_STATE_CAL_WAIT = 13;

    /**
     * 计算单元准备计算：等待,自身引用
     */
    int CALUNIT_STATE_CAL_WAIT_SELF_REF = 14;

    /**
     * 计算单元准备计算：等待循环引用
     */
    int CALUNIT_STATE_CAL_WAIT_WHILE_REF = 15;
    /**
     * 计算单元准备计算中
     */
    int CALUNIT_STATE_CALING = 20;
    /**
     * 计算单元准备计算完成
     */
    int CALUNIT_STATE_CALED = 21;

    /**
     * 计算单元准备计算完成:错误
     */
    int CALUNIT_STATE_CALED_ERROR = 22;

    /**
     * 获取计算结果信息
     *
     * @return {@link CalResultEntity}
     */
    Map<Serializable, CalResultEntity> getCalResultMap();

    /**
     * 写入计算结果信息
     */
    void setCalResultMap(Map<Serializable, CalResultEntity> resultMap);
}
